package com.pan.admin.quartz.task;

import com.gitee.apanlh.util.base.IteratorUtils;
import com.gitee.apanlh.util.date.DateUtils;
import com.gitee.apanlh.util.valid.ValidParam;
import com.pan.admin.module.visualizer.entity.po.ApiDataStatisticsPO;
import com.pan.admin.module.visualizer.service.ApiDataStatisticsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 *  API渠道数据统计
 *
 *  @author Pan
 */
@Component("apiDataStatisticsTask")
public class ApiDataStatisticsTask {

    @Autowired
    private ApiDataStatisticsService apiDataStatisticsService;

    /**
     *  API渠道日志数据采集任务
     *
     *  @author Pan
     */
    public void dataCollection() {
        //  该客户端不存在统计表则插入新日志表
        List<ApiDataStatisticsPO> listNotExistApiClient = apiDataStatisticsService.listNotExistApiClient();
        IteratorUtils.array(listNotExistApiClient, notExistApiKey -> notExistApiKey.setCreateTime(DateUtils.currentTime()));
        if (ValidParam.isNotEmpty(listNotExistApiClient)) {
            apiDataStatisticsService.batchInsert(listNotExistApiClient);
        }

        //  获取当天API渠道数据统计信息
        List<ApiDataStatisticsPO> listApiKey = apiDataStatisticsService.listApiDataStatistics();
        if (ValidParam.isEmpty(listApiKey)) {
            return;
        }

        //  如果存在则做更新动作
        String startTime = DateUtils.dateTimeOffsetByMinutes(5);
        String endTime = DateUtils.currentTime();

        //  获取渠道账单数据
//        ApiVisualizerQO billQO = new ApiVisualizerQO();
//        billQO.setStartTime(startTime);
//        billQO.setEndTime(endTime);
//        billQO.setListApiClientId(CollUtils.toList(listApiKey, t -> t.getApiClientId()));
//        List<ApiDataStatisticsPO> listSumBill = apiDataStatisticsService.listBill(billQO);
//
//        //  分组获取账单数据
//        List<ApiDataStatisticsPO> listGroup = CollUtils.newArrayList();
//        for (ApiDataStatisticsPO apikey : listApiKey) {
//            String apiClientId = apikey.getApiClientId();
//
//            //  获取基础数据
//            ApiVisualizerQO apiVisualizerQO = new ApiVisualizerQO();
//            apiVisualizerQO.setStartTime(startTime);
//            apiVisualizerQO.setEndTime(endTime);
//            apiVisualizerQO.setApiClientId(apiClientId);
//
//            //  获取渠道流程数据
//            List<ApiDataStatisticsPO> listApiDataStatisticsPO = apiDataStatisticsService.listFlow(apiVisualizerQO);
//            IteratorUtils.array(listApiDataStatisticsPO, t -> listGroup.add(t));
//
//            //  设置成本及收入
//            ApiDataStatisticsPO sumBill = CollUtils.findOne(listSumBill, t -> Eq.str(apiClientId, t.getApiClientId()));
//            ApiDataStatisticsPO sucFlow = CollUtils.findOne(listApiDataStatisticsPO, t -> Eq.object(t.getStatus(), 11));
//            if (ValidParam.isNotNull(sucFlow)) {
//                sucFlow.setTotalRevenue(sumBill.getTotalRevenue());
//                sucFlow.setTotalCost(apikey.getTotalCost());
//            }
//        }
    }

}
